#include #define True 1 #define False 0 #define K 6 int count; typedef struct node { struct node *left, *right; } NODE; int bin_tree_isom( NODE *r1, NODE *r2 ) { count += 2; if ( r1 == NULL && r2 == NULL ) return True; count += 2; if ( r1 == NULL || r2 == NULL ) return False; return ( bin_tree_isom( r1 -> left, r2 -> left ) && bin_tree_isom( r1 -> right, r2 -> right ) ); } void main() { int i; NODE *r1, *r2, *ptr1, *ptr2; r1 = ( NODE * ) calloc( 1, sizeof( NODE ) ); r2 = ( NODE * ) calloc( 1, sizeof( NODE ) ); ptr1 = r1; ptr2 = r2; for ( i = K - 1; i > 0; i-- ) { ptr1 = ptr1 -> left = ( NODE * ) calloc( 1, sizeof( NODE ) ); ptr2 = ptr2 -> left = ( NODE * ) calloc( 1, sizeof( NODE ) ); } /* r2 -> right = ( NODE * ) calloc( 1, sizeof( NODE ) ); */ count = 0; if ( bin_tree_isom( r1, r2 ) ) printf( "Trees are isomorphic\n" ); else printf( "Trees are not isomorphic\n" ); printf( "count = %d\n", count ); }